/*
 ============================================================================
 Page	     : 561-562
 Name        : varargs.c
 Date	     : 20210408
 Author      : Hbue 18060333
 Copyright   : Your copyright notice
 Description : use variable number of arguments
 ============================================================================
 */

#include <stdio.h>
#include <stdarg.h>

double sum(int,...);

int main(void)
{
	double s = sum(3, 1.1, 2.5, 13.3);
	double t = sum(6, 1.1, 2.1, 13.1, 4.1, 5.1, 6.1);

	printf("return value for sum(3, 1.1, 2.5, 13.3):                %g\n", s);
	printf("return value for sum(6, 1.1, 2.1, 13.1, 4.1, 5.1, 6,1): %g\n", t);

	return 0;
}

double sum(int lim,...)
{
	va_list ap;							// 声明一个对象存储函数
	double total = 0;

	va_start(ap, lim);					// 把ap初始化为参数列表
	for(int i = 0; i < lim; i++)
	{
		total += va_arg(ap, double);	// 访问参数列表中的每一项
	}
	va_end(ap);							// 清理工作

	return total;
}

